home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / hsrc_117.zip / SELECT.C < prev    next >
Text File  |  1990-11-11  |  5KB  |  237 lines

  1. /* Various selection routines */
  2.  
  3. #include "msgg.h"
  4. #include "twindow.h"
  5. #include "keys.h"
  6. #include "headedit.h"
  7.  
  8.  
  9.  
  10. word pascal select_mess (void) {
  11.  
  12.     char s[7];
  13.     static char prompt[40];
  14.     int returncode;
  15.     WINDOW *wnd;
  16.     FIELD *fld;
  17.  
  18.     wnd=establish_window(3,maxy-7,5,46);
  19.     set_border(wnd,3);
  20.     set_title(wnd," Message Selection ");
  21.     set_colors(wnd,BORDER,7,0,0);
  22.     display_window(wnd);
  23.     wcursor(wnd,0,0);
  24.     wprintf(wnd," F10 to change or ESC to abort");
  25. Again:
  26.     sprintf(s,"%u",messno);
  27.     sprintf(prompt,"Message #(1-%u):",nomess);
  28.     wprompt(wnd,2,2,prompt);
  29.     fld=establish_field(wnd,25,2,msk5,s,'N');
  30.     field_window(fld,"messages  ",40,6);
  31.     prep_template(wnd);
  32. AskOver:
  33.     returncode=data_entry(wnd);
  34.     if (returncode==ESC) {
  35.         delete_window(wnd);
  36.         return messno;
  37.     }
  38.     if (returncode!=F10) goto AskOver;
  39.     if ((word)atol(s)<1 || (word)atol(s)>nomess) {
  40.         error_message(" Invalid ");
  41.         nopause();
  42.         goto AskOver;
  43.     }
  44.     delete_window(wnd);
  45.     messno=(word)atol(s);
  46.     return messno;
  47. }
  48.  
  49.  
  50.  
  51. word pascal select_area () {
  52.  
  53.     char s[13];
  54.     int  returncode;
  55.     register word x;
  56.     WINDOW *wnd;
  57.     FIELD *fld;
  58.  
  59. Again:
  60.     wnd=establish_window(3,maxy-7,7,36);
  61.     set_border(wnd,3);
  62.     set_title(wnd," Area Selection ");
  63.     set_colors(wnd,ALL,BLACK,WHITE,BRIGHT);
  64.     set_colors(wnd,TITLE,BLACK,WHITE,DIM);
  65.     set_colors(wnd,BORDER,WHITE,BLACK,BRIGHT);
  66.     display_window(wnd);
  67.     wcursor(wnd,0,0);
  68.     wprintf(wnd," F10 to change or ESC to abort\n");
  69.     wprintf(wnd,"\n  Current: %s",area_attr());
  70.     sprintf(s,"%u",areano);
  71.     init_template(wnd);
  72.     wprompt(wnd,1,4,"Area #/name:");
  73.     fld=establish_field(wnd,20,4,msk12,s,'A');
  74.     field_window(fld,"areas     ",40,6);
  75.     prep_template(wnd);
  76. AskOver:
  77.     returncode=data_entry(wnd);
  78.     if (returncode==ESC) {
  79.         delete_window(wnd);
  80.         return areano;
  81.     }
  82.     if (returncode!=F10) goto AskOver;
  83.     delete_window(wnd);
  84.     rstrip(s);
  85.     lstrip(s);
  86.     if ((word)atol(s)<1 && *s=='0') {
  87.         find_area();
  88.         return areano;
  89.     }
  90.     if ((word)atol(s)>4095) goto Again;
  91.     if((word)atol(s)==0) {
  92.         for (x=0;x<maxareas;x++) {
  93.             if (!stricmp(marea[x].name,s)) {
  94.                 sprintf(s,"%u",marea[x].number);
  95.             }
  96.         }
  97.     }
  98.     if((word)atol(s)) {
  99.         nomess=check_area((word)atol(s));
  100.         areano=(word)atol(s);
  101.     }
  102.     find_area();
  103.     if (nomess) messno=1;
  104.     else messno=0;
  105.     get_mess(0);
  106.     return areano;
  107. }
  108.  
  109. void pascal switch_dirs (void) {
  110.  
  111.   int s;
  112.   register word x;
  113.   WINDOW *wnd;
  114.  
  115.   if(!nodirs) {
  116.     error_message(" No directories from which to select! ");
  117.     pause();
  118.     return;
  119.   }
  120.   wnd=establish_window(6,0,nodirs+2,80);
  121.   set_border(wnd,1);
  122.   set_title(wnd," Select default msg path ");
  123.   set_colors(wnd,BORDER,7,0,0);
  124.   clear_message();
  125.   set_help("paths     ",65,13);
  126.   display_window(wnd);
  127.     clear_window(wnd);
  128.     wcursor(wnd,0,0);
  129.     if (nodirs) for (x=0;x<nodirs;x++) {
  130.         if(*dirs[x])wprintf(wnd,"\n%s",dirs[x]);
  131.         else wprintf(wnd,"\nDEFAULT DIR");
  132.     }
  133. ReDo:
  134.     s=get_selection(wnd,1,NULL);
  135.     switch (s) {
  136.         case 0:     break;
  137.         case 1:     if(s<nodirs+1 && s>0) {
  138.                         save_lastread();
  139.                         strcpy(path,dirs[s-(1)]);
  140.                         load_lastread();
  141.                         if(marea){
  142.                             for(x=0;x<maxareas;x++) {
  143.                                 if(marea[x].name) free(marea[x].name);
  144.                             }
  145.                             farfree((void far *)marea);
  146.                         }
  147.                         load_areas();
  148.                         currarea=&nullarea;
  149.                         find_area();
  150.                         nomess=check_area(areano);
  151.                         if(messno>nomess)messno=nomess;
  152.                     }
  153.                     else {
  154.                         bell();
  155.                         goto ReDo;
  156.                     }
  157.     }
  158.     delete_window(wnd);
  159. }
  160.  
  161.  
  162.  
  163.  
  164. void pascal select_name (void) {
  165.  
  166.   int s;
  167.   register word x;
  168.   WINDOW *wnd;
  169.  
  170.   wnd=establish_window(6,0,noalias+2,40);
  171.   set_border(wnd,1);
  172.   set_title(wnd," Select default name ");
  173.   set_colors(wnd,BORDER,7,0,0);
  174.   clear_message();
  175.   set_help("names      ",65,13);
  176.   display_window(wnd);
  177.     clear_window(wnd);
  178.     wcursor(wnd,0,0);
  179.     if (noalias) for (x=0;x<noalias && x<(maxy-2);x++) {
  180.         wprintf(wnd,"\n%s",alias[x]);
  181.     }
  182. ReDo:
  183.     s=get_selection(wnd,1,NULL);
  184.     switch (s) {
  185.         case 0:        break;
  186.         default:    if (s>(noalias+1)) {
  187.                         bell();
  188.                         goto ReDo;
  189.                     }
  190.                     strcpy(name,alias[s-(1)]);
  191.     }
  192.     delete_window(wnd);
  193. }
  194.  
  195.  
  196.  
  197.  
  198. void pascal select_address (void) {
  199.  
  200.   int s;
  201.   register word x;
  202.   char total;
  203.   WINDOW *wnd;
  204.  
  205.   wnd=establish_window(6,0,noaddress+2,70);
  206.   set_border(wnd,1);
  207.   set_title(wnd," Select default address ");
  208.   set_colors(wnd,BORDER,7,0,0);
  209.   clear_message();
  210.   set_help("addresses ",65,13);
  211.   display_window(wnd);
  212. ReDo:
  213.     total=0;
  214.     clear_window(wnd);
  215.     wcursor(wnd,0,0);
  216.     if (noaddress) for (x=0;x<noaddress && x<(maxy-2);x++) {
  217.         wprintf(wnd,"\n%u:%u/%01u.%01u@%s",address[x]->zone,address[x]->net,address[x]->node,address[x]->point,address[x]->domain);
  218.         total++;
  219.     }
  220.     s=get_selection(wnd,1,NULL);
  221.     switch (s) {
  222.         case 0:        break;
  223.         default:    if (s>total || s<1) {
  224.                         bell();
  225.                         goto ReDo;
  226.                     }
  227.                     curaddress.zone=address[s-1]->zone;
  228.                     curaddress.net=address[s-1]->net;
  229.                     curaddress.node=address[s-1]->node;
  230.                     curaddress.point=address[s-1]->point;
  231.                     strcpy(curaddress.domain,address[s-1]->domain);
  232.                     break;
  233.     }
  234.     delete_window(wnd);
  235. }
  236.  
  237.